/**
 * Store类型定义
 */

// 持久化配置
export interface PersistOptions {
  enabled: boolean           // 是否启用持久化
  key?: string              // 存储key，默认使用store名称
  paths?: string[]          // 需要持久化的状态路径，不指定则持久化整个state
}

// Store配置选项
export interface StoreOptions<S = any, G = any, A = any> {
  id: string                // Store唯一标识
  state: () => S            // 状态初始化函数
  getters?: G               // 计算属性
  actions?: A               // 方法
  persist?: PersistOptions  // 持久化配置
}

// Store实例类型
export interface Store<S = any, G = any, A = any> {
  $id: string
  $state: S
  $reset: () => void
  $patch: (partialState: Partial<S>) => void
}

export type StoreDefinition<S = any, G = any, A = any> = () => Store<S, G, A> & S & G & A


